home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / fb386 / lib / powergui / powergui.doc < prev    next >
Text File  |  1995-03-30  |  26KB  |  881 lines

  1.  
  2.  
  3.   Power GUI system
  4.  
  5.      C” 4th edition [  Duplicate me! mix  ] β version
  6.  
  7.  
  8.                                              for F-BASIC 386 V2.1 L10 -
  9.                                              Programmed by Hirotaka Matsuoka
  10.  
  11.  
  12. ■ご紹介っ
  13.  
  14.  本プログラムは F-BASIC 386 用GUIサブルーチンで、こんな特徴があります。
  15.  
  16.  
  17.  ●見た目・使い勝手
  18.  
  19.   ・TOWNS-OS 準拠のGUIをなるべく再現っ
  20.  
  21.   ・ファイルセレクタ(当然GUI)を別プログラムとして用意
  22.    マージー後、1命令で呼び出せます。
  23.    (後注:βバージョンではご利用頂けません。)
  24.  
  25.   ・角の丸いウィンドウが開けるですよー。
  26.  
  27.   ・いろんな部品があるですよー。
  28.  
  29.  
  30.  ●プログラム
  31.  
  32.   ・変数/ラベル名の先頭統一・行番号不依存等、組み込みやすい。
  33.  
  34.   ・解像度不依存システム搭載により、全ての画面モードで動作。
  35.  
  36.   ・設定値・返り値に文字列をサポート、これにより、座標設定の自動化・可読性
  37.    の高いGUIプログラミングが可能。
  38.  
  39.   ・ウィンドウ、ボタンはもちろん、リストメニュー、スクロールバー、24ドッ
  40.    トローカルアイコン等、いろんな部品がよりどりみどり。
  41.  
  42.   ・他から頭一つ抜け出た、安定したGUIアプリケーション構築に役立ちます。
  43.  
  44.   ・その特性から、プログラムのより一層の構造化を促します。
  45.  
  46.  
  47.  
  48.  ●動作環境
  49.  
  50.   ・F-BASIC 386 が動作する環境。
  51.  
  52.   ・i486 機以上、又はコンパイルしての利用を推奨
  53.  
  54.   ・メインメモリー3MB以上(16色モード利用時)
  55.  
  56.   ・本システムは F-BASIC 386 がサポートする全ての画面モードで動作します。
  57.  
  58.       多色モード利用時は、   256色 → 3MB以上
  59.                  32768色 → 4MB以上
  60.                 1677万色 → 5MB以上
  61.  
  62.            のメモリを推奨します。(プログラムにもよるけど・・・)
  63.  
  64.  
  65.  
  66.    <<<  C”4th edition リファレンスマニュアル  >>>
  67.  
  68.  
  69.  本リファレンスは、かなり細かに解説しているため、初心者には多少分かりにくいものになっているかもしれません。
  70.  
  71.  そこで、所々にサンプルプログラムを挿入しました。
  72.  
  73.  文章での説明が分かりにくいという方は、そちらのサンプルの方をメインに読んでもらうと理解しやすいかもしれません。
  74.  
  75.  
  76.  
  77. ■組み込み
  78.  
  79.  本プログラムはサブルーチンですので、他のプログラムに組み込んで利用します。
  80.  
  81.  組み込みは、F-BASIC 386 エディタ上の「マージ」機能(マニュアル参照)、又は、テキストエディタで行って下さい。
  82.  
  83.  組み込み時は、以下の点に気をつけてください。
  84.  
  85.  
  86.   ●本プログラムは行番号不依存ですので、行番号を取り除いても大丈夫です。
  87.  
  88.   ●本プログラムの変数・ラベル名の先頭は、必ず、
  89.  
  90.                   PGUI
  91.                          FSEL
  92.                       のどちらかになっています。
  93.  
  94.  
  95. ■オーバーオール
  96.  
  97.  本システムの基本仕様は以下の通りです。
  98.  
  99.  
  100.  ●部品のレイアウト
  101.  
  102.    本システムはレイアウターを用意していませんので、GUI部品の種類・大き
  103.   さ・位置等は、プログラマーが自力で登録します。
  104.  
  105.  ●部品の登録
  106.  
  107.    部品の登録は、窓口変数に必要なパラメータをセットして GOSUB *PGUI_ENTRY
  108.   で行います。
  109.  
  110.    この窓口変数とは、具体的に、
  111.  
  112.           PGUI_SX / SY     左上座標
  113.           PGUI_WX / WY     部品のサイズ
  114.           PGUI_DISP$        表示文字数
  115.  
  116.    といった変数の事で、こういったものは全部で約30種あります。
  117.  
  118.    ただ、1つの部品に30個のパラメータ全部をセットする必要はなく、そのう
  119.   ち、設定が必要な特定の窓口にだけセットします。
  120.  
  121.    また、設定が必要な窓口変数の種類は、部品の型によって異なりますので、ど
  122.   の窓口にどんな設定をするのかについては、「部品リファレンス」の項をご覧く
  123.   ださい。
  124.  
  125.  ●部品情報の取得
  126.  
  127.    部品情報の取得は、まず、「 GOSUB *PGUI_PARTS_ACTIVE 」を使って部品をア
  128.   クティブ状態にし、窓口変数を読むことで行います。
  129.  
  130.    が、現実には、このような作業をする必要はほとんどありませんので、忘れま
  131.   しょう。
  132.  
  133.    ちなみに、マウスで選択された部品は、自動的にアクティブ状態になります。
  134.  
  135.  ●部品の管理
  136.  
  137.    全てのウィンドウ・部品はプログラマーが付けた名前で管理されます。
  138.  
  139.    そのため、1度でもアクティブにする部品には必ず名前が必要です。が、部品
  140.   をアクティブにする場面はほとんどありませんので、名前もほぼ省略できます。
  141.  
  142.    但し、ウィンドウに関しては、必ず名前が必要です。(理由は後述)
  143.  
  144.  ●部品の管理(内部)
  145.  
  146.    本システムでは、ボタン等の部品は必ずウィンドウに属していて、制御は、全
  147.   てウィンドウ単位で行います。
  148.  
  149.    このため、「指定の部品のみを非表示にする」等の制御はできません。
  150.  
  151.    また、ウィンドウを開く際には、ウィンドウの名前がパラメータとして必要な
  152.   ため、ウィンドウには必ず名前が必要です。
  153.  
  154.  
  155.  
  156.        これ以外の基本仕様については、後半で紹介します。
  157.  
  158.  
  159.  
  160. ■利用方法
  161.  
  162.  GUIシステムの大まかな利用手順は以下の通りです。
  163.  
  164.   ●1.まず初期化
  165.  
  166.      1 CLEAR   文による配列領域の確保
  167.      2 SCREEN @ 文による画面モードの設定
  168.      3 GUIシステム用パラメータの設定
  169.      4 GOSUB *PGUI_INIT の実行
  170.  
  171.  
  172.   ●2.そしてGUI部品を登録し
  173.  
  174.      (GUI部品は全て、いずれかのウィンドウに属している必要があるた
  175.       め、最初は必ずウィンドウを設定します。)
  176.  
  177.      1 ウィンドウのパラメータを窓口変数に設定
  178.      2 GOSUB *PGUI_ENTRY
  179.  
  180.      3 部品のパラメータを窓口に設定
  181.      4 GOSUB *PGUI_ENTRY
  182.  
  183.      5 (3~4)を部品の数だけ繰り返す。
  184.  
  185.      6 (1~5)を登録したいウィンドウの数だけ繰り返す。
  186.  
  187.  
  188.   ●3.ウィンドウをオープン
  189.  
  190.      1 オープンするウィンドウの名前を PGUI_NAME$ に設定
  191.      2  GOSUB *PGUI_WIN_OPEN
  192.  
  193.  
  194.   ●4.GUI作動
  195.  
  196.      1 GOSUB *PGUI
  197.      2 プログラマーのプログラムを実行する
  198.  
  199.      3 1に戻る
  200.  
  201.  
  202.  以上が、GUIシステムを利用したプログラム全体の構造になります。
  203.  
  204.  ここからは、それぞれについて細かく説明します。
  205.  
  206.  
  207.  << ユーザー開放サブルーチンについて >>
  208.  
  209.   ここからは、ユーザーが使えるサブルーチンの解説をします。
  210.  
  211.   これらのサブルーチンは GOSUB 文で呼出して使って下さい。
  212.  
  213.  
  214. ■初期化
  215.  
  216.  ●*PGUI_INIT
  217.  
  218.   GUIシステムを初期化します。
  219.  
  220.   実行前には、
  221.  
  222.      CLEAR     命令
  223.      SCREEN @x 命令(SCREEN @0 等)
  224.  
  225.   が実行されていて、
  226.  
  227.    十分な配列変数領域
  228.    12ドットフォントが利用可能なDLL領域
  229.  
  230.   が確保された状態で、
  231.  
  232.       VIEW / WINDOW 命令の設定が初期状態(気にしなくていい)
  233.  
  234.   でなくてはなりません。
  235.  
  236.   なお、このルーチンはプログラム中で1回しか実行できません。(2回目以降は
  237.  呼び出しても何もしない。)
  238.  
  239.   ▲設定変数
  240.  
  241.     PGUI_MEMORY&  GUIシステム用に開放する配列変数領域の大きさを設定
  242.            します。(単位はバイト)
  243.             最低でも700K(70万)バイト以上を指定します。
  244.  
  245.             省略時は未使用配列領域の50%+αを確保します。
  246.  
  247.  
  248.   (例)完全な初期状態から、GUIシステム初期化までの全てを行います。
  249.  
  250.     CLEAR ,, 4096 , 1000000 ,, 70000    ' 配列 1Mbyte 確保
  251.     SCREEN @0
  252.         PGUI_MEMORY& = 700000
  253.     GOSUB *PGUI_INIT
  254.  
  255.  
  256.   ▲返り値
  257.  
  258.    *PGUI_INIT 実行時、以下の変数に情報が返ります。
  259.  
  260.     PGUI_COLORS&          画面モードの色数
  261.  
  262.     PGUI_BITS_PAR_SAMPLE  色数をビットで表したもの。
  263.  
  264.     PGUI_RESO_X / Y       ディスプレイの解像度
  265.  
  266.  
  267.   ▲関数
  268.  
  269.    初期化後は、以下の関数が利用可能です。(気にしなくてもいいけど便利)
  270.  
  271.      FNG_BUF_DIM&( X size , Y size , Bits par sample , Variable length )
  272.  
  273.        :グラフィック格納に必要な配列サイズをF-BASIC386準拠で、また
  274.     は、バイト数の場合はEGB準拠で、色数も考慮して算出します。
  275.  
  276.           X size / Y size   グラフィックの大きさ(ピクセル)
  277.  
  278.           Bits par sample   変数 PGUI_BITS_PAR_SAMPLE の値
  279.                1 / 4 / 8 / 16 / 24 等が設定可能です。
  280.  
  281.           Variable length   配列1要素の大きさ
  282.                    整数型なら 2
  283.                   ロング型なら 4 を設定
  284.                1を設定した場合はバイト数で算出します。
  285.  
  286.  
  287.   ▲関連機能:*PGUI_REFRESH   窓口変数群をリフレッシュします。
  288.  
  289.  
  290.  
  291. ■部品の登録
  292.  
  293.  ●*PGUI_ENTRY
  294.  
  295.    部品をエントリします。
  296.  
  297.    ボタン等、ウィンドウ以外の部品のエントリは、ベースとなるウィンドウをエ
  298.   ントリしてから行います。
  299.  
  300.    なお、全てのエントリに先立って「 *PGUI_INIT 」によるシステムの初期化が
  301.   必要です。忘れないように。
  302.  
  303.  
  304.   ▲設定変数(窓口変数)
  305.  
  306.     エントリ時のGUI部品のパラメータ設定は、窓口変数と呼ばれる特定の変
  307.    数に行います。
  308.  
  309.     ここでは、まず、この「窓口変数」について解説します。
  310.  
  311.     窓口変数とは、部品の大きさや場所などをセットする特定の変数の事で、部
  312.    品のエントリは、この窓口に部品情報をセットしてから、GOSUB *PGUI_ENTRY 
  313.    で行います。
  314.  
  315.     この窓口変数は、通常、
  316.  
  317.        PGUI_NAME$     が、部品に付ける名前
  318.              PGUI_SX / SY   が、部品の左上座標
  319.  
  320.     というように、部品の種類に関係なく、大抵、同じ要素を表しているのです
  321.    が、部品の種類によっては、例外もあります。
  322.  
  323.     そのため、ここでは一般的な用法を紹介し、詳細については、各部品の解説
  324.    を見てもらう事にします。
  325.  
  326.     なお、ここでは、簡略化のため、変数名の先頭の「 PGUI_ 」は省略します。
  327.  
  328.    NAME$     プログラマーが付ける部品の名称。
  329.         255文字以内なら、日本語/英語は問いません。
  330.         (全部品共通)
  331.  
  332.       TYPE$     部品の大まかな種類。
  333.         この項目は、大文字英語に統一されており、
  334.  
  335.                   "BUTTON" / "ICON24" / "WINDOW" / "SCROLL LIST MENU"
  336.                   "LETTER" / "ICON12"
  337.  
  338.         等々が指定できます。
  339.  
  340.         なお、これ以降は、部品によって設定内容がかなり変わります。
  341.  
  342.  
  343.       FORM$     部品の細かな形状。
  344.         この項目も、大文字英語に統一されており、
  345.  
  346.                   "ROUND" / "SQUARE" / "3D" / "SIMPLE 3D"
  347.  
  348.         等が指定できます。(部品ごとに違う。)
  349.  
  350.       DISP$     部品に表示する文字列。
  351.                 主にボタンの表示文字や、ウィンドウのタイトル等に使います。
  352.  
  353.       RETURN$   マウスで選択された時に返す文字列。
  354.         省略時は、DISP$ に設定された文字列を返します。
  355.         この時 DISP$ は省略しても構いません。
  356.  
  357.    POS$      部品の表示位置を文字列で指定します。
  358.  
  359.          このバージョンでは、(TYPE)- "WINDOW" の時に、"中央" のみが
  360.          設定できます。
  361.  
  362.    SX / SY   部品の表示位置をウィンドウ内座標で指定します。
  363.         但し、ウィンドウの場合はディスプレイ座標で指定します。
  364.  
  365.    WX / WY   部品の大きさを設定します。
  366.         ボタン等では、設定を省略でき、その場合、表示する文字列から適
  367.         当な大きさを算出します。
  368.  
  369.    DATA&     部品に与える数値データです。
  370.         (TYPE)- "ICON12" / "ICON24" 等のアイコン番号等に使われます。
  371.  
  372.    DISP_WX / WY
  373.         主に表示する項目の数(幅)を表します。
  374.  
  375.    START_X / Y
  376.         主に表示を開始する項目番号を表します。
  377.  
  378.       LINE_SPACE
  379.         行間を表します。
  380.  
  381.    LIST_BUF_SIZE&
  382.         リストデータ用に確保するリストデータの行数を設定します。
  383.         (TYPE)- "LIST MENU" / "SCROLL LIST MENU" 等で利用します。
  384.  
  385.       MAX_X / Y
  386.         表示を許可する最大項目番号
  387.         これ以上の項目番号の表示はマスクされます。
  388.  
  389.    MIN_X / Y
  390.         表示を許可する最小項目番号
  391.         これ以下の項目番号の表示はマスクされます。
  392.  
  393.  
  394.   の以上です。但し、ここに記した用途は、あくまでも一般的なものですので、詳しくは、各部品の解説をご覧ください。
  395.  
  396.  
  397.   (例)ウィンドウの中に、
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  ●*PGUI_REFRESH
  404.  
  405.   窓口変数をリフレッシュします。
  406.  
  407.   ▲設定変数: 無し
  408.  
  409.   ▲関連機能: *PGUI_INIT  システムの初期化や、GUI用メモリの設定を行い
  410.                ます。
  411.  
  412.  
  413.  
  414. ■ウィンドウ
  415.  
  416.  ●*PGUI_WIN_OPEN
  417.  
  418.   ウィンドウをオープンします。
  419.   指定したウィンドウは既に登録されてなければいけません。
  420.  
  421.   ▲設定変数:
  422.  
  423.     PGUI_NAME$      オープンしたいウィンドウの名前
  424.  
  425.  
  426.   (例)"メインメニュー" ウィンドウをオープンします。
  427.  
  428.         PGUI_NAME$ = "メインメニュー"
  429.         GOSUB *PGUI_WIN_OPEN
  430.  
  431.  
  432.   ▲関連機能:*PGUI_WIN_CLOSE ウィンドウをクローズします。
  433.  
  434.  
  435.  
  436.  ●*PGUI_WIN_CLOSE
  437.  
  438.   一番上のウィンドウをクローズします。
  439.   本システムでは、スタック型ウィンドウを採用しているため、開いた逆の順番でしかクローズできません。
  440.  
  441.   ▲設定変数:無し
  442.  
  443.   (例)一番上のウィンドウをクローズします。
  444.  
  445.         GOSUB *PGUI_WIN_CLOSE
  446.  
  447.  
  448.   ▲関連機能:*PGUI_WIN_OPEN
  449.  
  450.  
  451.  
  452. ■システム作動
  453.  
  454.  ●*PGUI
  455.  
  456.   Power GUI system  C” を作動させます。
  457.  
  458.   ▲設定変数:無し
  459.  
  460.   (例)C”を作動し、
  461.  
  462.      「終了」      ボタンが押されたらウィンドウをクローズ
  463.      「ファイル読み込み」ボタンが押されたら読み込みルーチンの呼出し
  464.      「ファイル保存」  ボタンが押されたら保存ルーチンの呼出し
  465.  
  466.      を行います。
  467.  
  468.         GOSUB *PGUI_REFRESH
  469.         WHILE PGUI_RETURN$ <> "終了"
  470.           IF PGUI_RETURN$ = "ファイル読み込み" THEN
  471.             GOSUB *LOAD_FILE
  472.           ELSE
  473.           IF PGUI_RETURN$ = "ファイル保存" THEN
  474.             GOSUB *SAVE_FILE
  475.           ENDIF
  476.           ENDIF
  477.           GOSUB *PGUI               ' while / wend ループ中にこの命令を入れる
  478.         WEND
  479.         GOSUB *PGUI_WIN_CLOSE
  480.  
  481.  
  482.    ウィンドウのユーザープログラムには、(例)のような while / wend ループ
  483.   の利用をオススメします。
  484.  
  485.   <--- Important! --->
  486.  
  487.    また、プログラマーがプログラム中で利用するメッセージ(上の例でいう "フ
  488.   ァイル保存" とか "ファイル読み込み" とか "終了" とかの事)は、部品登録時
  489.   に、窓口変数「PGUI_RETURN$ 」に、事前に設定しておく必要があります。
  490.  
  491.  
  492.    あと、これは宣伝ですが、ボタン情報が番号でなく文字列で返るため、このよ
  493.   うに、可読性の高いGUIプログラミングが作成可能です。
  494.  
  495.    また、番号で管理を行うと、部品を追加挿入した場合に、プログラム中の番号
  496.   部分をかなりいじる必要があるのですが、この方式だと、変更が必要ありません。
  497.  
  498.    これにより、プログラム開発中の、部品の追加・削除がカンタンに行えます。
  499.  
  500.  
  501.  
  502. ■各部品のリファレンス
  503.  
  504.  ここでは、登録可能な部品と、登録時に設定が必要な窓口変数・内容を解説します。
  505.  
  506.  ●ウィンドウ
  507.  
  508.   TYPE$   "WINDOW" を指定します。
  509.  
  510.   SX / SY or POS$
  511.       どちらでも指定できます。
  512.  
  513.   WX / WY
  514.       省略できません。
  515.  
  516.     FORM$   "T-OS"
  517.         TOWNS-OS型のウィンドウです。
  518.         DISP$ に文字がある場合、タイトルとタイトルバーも表示します。
  519.         DISP$ がヌルの場合は、タイトルバーを表示しません。
  520.  
  521.       "ROUND"
  522.         角の丸いウィンドウです。
  523.  
  524.       "SQUARE"
  525.         1ドット幅の枠の付いた長方形のウィンドウです。
  526.  
  527.       "SQUARE2"
  528.         2重枠の付いた長方形のウィンドウです。
  529.  
  530.  
  531.  ●ボタン
  532.  
  533.   TYPE$   "BUTTON" を指定します。
  534.  
  535.   DISP$   表示する文字列を 255 バイト以内で指定します。
  536.       この時の表示フォント・サイズは、「 *PGUI_INIT 」中のフォント定義
  537.      の設定に従います。(デフォルトは、システム12ドット)
  538.  
  539.     SX / SY
  540.       ボタンのウィンドウ内左上位置です。
  541.       この設定は省略できません。
  542.  
  543.     WX / WY
  544.       ボタンの大きさです。通常は、1以上の整数を指定してください。
  545.       省略時、又は、0(ゼロ)を指定した場合は、DISP$ の内容から、適当
  546.      な大きさを算出します。
  547.       この時、縦だけ、横だけの省略も可能です。
  548.  
  549.   FORM$   "SQUARE"
  550.         1ドット幅の枠の付いた長方形のボタンです。
  551.  
  552.       "ROUND"
  553.         角の丸いボタンです。
  554.  
  555.       "3D"
  556.         ボコッとしたボタンです。3色で描きます。
  557.  
  558.       "SIMPLE 3D"
  559.         ボコッとしたボタンですが、2色で描きます。
  560.  
  561.       "CLOSE"
  562.         クローズ型のボタンです。
  563.         本ボタンでは DISP$ は指定できません。
  564.         また、位置・大きさも、自動的に (TYPE)WINDOW(FORM)T-OS のタイ
  565.        トルバー位置に合わせられます。
  566.  
  567.  
  568.     ▲高速表示処理について
  569.  
  570.       本部品「ボタン」は、同じ種類・大きさのボタンを連続して登録した場
  571.      合、表示高速化処理の対象になります。
  572.       大量のボタンを表示する場合には、できるだけ、ボタンの種類・大きさ
  573.      を統一し、連続して登録すると表示が高速になります。
  574.  
  575.  
  576.  
  577.  
  578.  ●アイコン
  579.  
  580.   TYPE$   "ICON12" / "ICON24" から選択
  581.  
  582.   DATA&   表示するアイコンの番号
  583.       指定できるアイコンの一覧と番号は、プログラマーズサポートの「アイ
  584.      コン一覧表」を参考にしてください。
  585.  
  586.  
  587.     SX / SY
  588.       省略できません
  589.  
  590.  
  591.  ●文字
  592.  
  593.   TYPE$   "LETTER"
  594.  
  595.   FORM$   "SYSTEM12"
  596.         システム12ドットフォントで表示します。
  597.  
  598.       "LOCAL12"
  599.         12ドットローカルアイコンデータ内のフォントを利用します。
  600.         半角英大文字の「A」から「Z」までの文字のみが表示できます。
  601.  
  602.     DISP$   表示する文字列を指定します。
  603.  
  604.     SX / SY
  605.       省略できません
  606.  
  607.  
  608.  ●テキストリスト/リストメニュー
  609.  
  610.  
  611.  
  612.  ●スクロールバー
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.  
  621.  
  622.  
  623.  
  624. ■オーバーオールその2
  625.  
  626.  ●部品の登録に関して
  627.  
  628.   <--- Important! --->
  629.  
  630.    前にも説明したように、部品の登録は、
  631.  
  632.     ・窓口変数にパラメータを設定して
  633.  
  634.     ・GOSUB *PGUI_ENTRY を実行
  635.  
  636.    して行いますが、本システムでは連続して部品を登録する場合、一回一回窓口
  637.   変数を初期化しないので、注意が必要です。
  638.  
  639.    これは、部品の種類を表す「 PGUI_TYPE$ 」を例に取っていうなら、一度「 P
  640.   GUI_TYPE$ = "BUTTON" 」を実行したなら、以後、「 PGUI_TYPE$ 」に別の部品
  641.   種類名が代入するまでは、ずーっと「ボタン」という種類の部品登録だと解釈さ
  642.   れるということです。
  643.  
  644.    同様に、同一Y座標にいくつもの部品を設置する場合も、一度Y座標を設定し
  645.   ておけば、次に設定しなおすまではずっとそれが有効になります。
  646.  
  647.    これは、広い意味においてはなかなか便利なものなのですが、プログラムのあ
  648.   る部分以降で、部品の種類が突然変わるような場合、設定パラメータの把握とい
  649.   う意味で多少面倒です。
  650.  
  651.    これを解決するために用意したのが、ユーザー開放サブルーチンの項で紹介し
  652.   たサブルーチン「 *PGUI_REFRESH 」です。
  653.  
  654.    これを利用すると、全ての窓口変数が初期化されますので、部品登録の節目節
  655.   目にご利用下さい。
  656.  
  657.  
  658.  
  659. ■ちょっと注意!
  660.  
  661.  エラーが出た時や、思ったように動かない時の参考にしてください。
  662.  
  663.  
  664.  << 利用上の注意 >>
  665.  
  666.  ●突然、画面モードを変えないでください。動作異常を起こします。
  667.  
  668.  
  669.  ●部品・イベントが重なっている場合
  670.  
  671.    基本的に部品やイベントは重ならないように配置しますが、重なった部分は、
  672.   後で登録した方の優先順位が高くなっています。
  673.  
  674.  
  675.  
  676.   << 動作異常とその対策 >>
  677.  
  678.  
  679.  ●部品が正しく表示されない
  680.  
  681.    部品の登録にエラーがあります。
  682.  
  683.   対策:
  684.  
  685.    登録時は、一つ前の部品で設定した窓口のパラメータは初期化しませんので、
  686.   留意してください、また、窓口初期化サブルーチン「 *PGUI_REFRESH 」をうま
  687.   く使っても対処ができます。
  688.  
  689.  
  690.  ●ある部品が動かない
  691.  
  692.    部品の登録にエラーがあります。
  693.  
  694.   対策:
  695.  
  696.    動かない部品の登録部、又、その1つ前の部品の登録部を確認してください。
  697.  
  698.  
  699.  ●全部の部品が反応しない
  700.  
  701.    サブルーチン *PGUI がユーザープログラム中で呼び出されていません。
  702.  
  703.   対策:
  704.  
  705.    サブルーチン「 *PGUI 」は本システムの心臓部ですので、忘れずに呼び出し
  706.   ましょう。
  707.    なお、「 GOSUB *PGUI 」は、マウス入力待ちループ全てに必要です。
  708.  
  709.  
  710.  ●文字の表示が汚い
  711.  
  712.   12ドットフォントが利用可能な状態になっていません。
  713.  
  714.   対策:
  715.  
  716.    12ドットフォントが使えるだけのDLL領域を確保していますか?
  717.    (DLL領域については、マニュアル参照)
  718.    起動ドライブにシステムディスクは入っていますか?
  719.    起動ドライブにフォントDLLはありますか?
  720.  
  721.  
  722.  ●「ERROR 5 / 関数または命令文の使い方が正しくありません」が発生する
  723.  
  724.   GUI用メモリ、もしくは雑用配列不足と考えられます。
  725.  
  726.   対策:
  727.  
  728.    GUIシステム初期化時のGUI用メモリサイズを大きくしてください。
  729.    多色モードほど、また、ウィンドウの総面積が広いほどメモリを食います。
  730.    プログラムにもよりますが、特に、1677万色モードでは、GUI用メモリ
  731.   だけでも最悪1.5MBは欲しい所です。
  732.    それでもだめな場合は、多少面倒ですが、「 *PGUI_INIT 」内で、エラーの原
  733.   因となった配列の宣言文を見つけて、確保する配列の大きさを大きめにする必要
  734.   があります。
  735.  
  736.  
  737.  ●「ERROR 83 / 配列変数領域がいっぱいになりました」が発生する
  738.  
  739.   配列変数領域が足りません。
  740.  
  741.   対応:
  742.  
  743.    CLEAR 命令で確保する配列変数領域を、大きめにしてください。
  744.  
  745.  
  746.  ●部品の反応が遅い
  747.  
  748.    マシンが遅い/部品の数が多い/コンパイルしていない/リストメニューで、
  749.   同時表示項目数が極端に多い、といった事が考えられます。
  750.  
  751.   対策:
  752.  
  753.    ボタンとマウスの当たり判定は、登録順の逆で行いますので、頻繁に選択され
  754.   る部品は後の方で登録すると、反応が速くなります。
  755.    但し、ウィンドウの当たり判定は常に最後ですので、部品を減らす以外に対策
  756.   はありません。
  757.  
  758.  
  759.  ●部品の表示が遅い
  760.  
  761.    表示の遅い部品を多用しているか、自動高速表示の対象になっていません。
  762.  
  763.   対策:
  764.  
  765.    「ボタン」については、同じ大きさ・種類のものを連続して登録すると、高速
  766.   表示機構が働き、表示速度が上がりますので、なるべく同じ大きさ・種類のもの
  767.   を利用するようにしましょう。
  768.    そうすれば、無茶な数のボタンも、高速で表示されます。
  769.    但し、ウィンドウがディスプレイ領域に収まり切らない位置・大きさの場合、
  770.   そのウィンドウ内の高速表示機構は無効になります。
  771.  
  772.  
  773.  ●プログラムの起動が遅い
  774.  
  775.    プログラム全体を通して、利用している部品の量が多すぎるか、マシンが遅い、
  776.   コンパイルしていない、等が考えられます。
  777.  
  778.   対策:
  779.  
  780.    部品の登録をプログラムの先頭で一括して行うのではなく、必要になった所で
  781.   必要になった分だけ登録するとよいでしょう。
  782.    但し、同じ部品を何度も何度も登録しないように、初めて呼び出された時にだ
  783.   け部品登録をする機構を用意しましょう。
  784.  
  785.  
  786.  
  787. ■あとがき
  788.  
  789.  システム用のにそっくりで、著作権的に心配な24ドットローカルアイコンですけど、、特に、ドット単位の複製は行っていません。
  790.  
  791.  あくまでも「こんな感じかな」って風に、グラフィックエディタで、雰囲気だけを頼りに書いてみました。
  792.  
  793.  ただ、作者が、ローカルなフォントデーターを書いていた関係上、小さな部品のドット単位のデザインに関しては、ちょっとしたノウハウを持っている事もあって、見栄えは、OSのとほとんど同じに見えるはずです。
  794.  
  795.  とはいっても、OSの(というか、F-BASIC 386 の)アイコンだって、「EXIT」のアイコンなんかは、非常口の看板のパクリだよねっ。まぁ、確か、ああいう非常用の標識は、著作権的にどう、とかいう事は無いらしい。という話も聞いたことがあるような無いような・・・。
  796.  
  797.  あとこれは単なる「素人のおたけび」ですけど、この説明書は、独自の理論に基づいた「理解しやすい文章」を、所々に盛り込んでおります。
  798.  
  799.  
  800.  
  801.  
  802. ■著作権・利用範囲・免責
  803.  
  804.  [ C" 4th edition Duplicate me ! MIX  ] は、松岡広高が著作権を所有する「フリーソフトウェア」です。
  805.  
  806.  本パッケージは、以下の範囲内でご利用下さい。
  807.  
  808.  
  809.  ・実行/組み込み/改変、また、このいずれの組合せも自由。
  810.  
  811.  ・無改変パッケージ/組み込み作品の配付は以下の条件で可能です。
  812.  
  813.    ▲個人/サークルの作品の配付は自由。
  814.  
  815.    ▲企業の作品の配付は許可が必要です。
  816.  
  817.  ・改変パッケージ/組み込み作品の発表は、以下の条件で可能です。
  818.  
  819.    ▲事前連絡は、営利団体に著作権のある作品を、営利団体が配付する場合のみ
  820.     必要です。
  821.  
  822.    ▲改変パッケージ/組み込み時は、著作者と改変の旨を表記して下さい。
  823.  
  824.  
  825.  また、著作者は、本パッケージに関係する一切の責任を負わないものとします。
  826.  
  827.  
  828.  ちなみに、改変・組み込み・再配付は大歓迎です。
  829.  
  830.  はっきりいうと、諸事情により、今後、私がこのプログラムのメンテナンスをしなくなる可能性もかなりありますので、改変・パワーアップパッケージ等のフリコレ応募・ネットへのアップを許可したいと思います。(上にも書いてはあるけど・・・。)
  831.  
  832.  
  833.  
  834. ■裏話
  835.  
  836.  このGUIシステム。実は、他の F-BASIC 386 用GUIライブラリ(NOI’z・・・とかVIL・・・とか)を駆逐するぐらいのつもりで作成しました。
  837.  
  838.  だって、後発で他のGUIシステムと同じじゃあ、みんな使い慣れたやつを使うにきまってるもんな。(しかも他のGUIシステムは、すでにレイアウターまで装備してやがる。)
  839.  
  840.  それに、Oh!FM-TOWNS とかに投稿しても、こういうプログラムはどうも載りにくそうな気が・・・
  841.  
  842.  まあ、これで、F-BASIC 386 用のGUIライブラリにも競争が起こるわけで、GUI対応の F-BASIC 386 が突然、富士通からリリースでもされない限りは(されないだろうな。)、このジャンルのプログラムは多少は発展するでしょうね。
  843.  
  844.  ただ、個人的には、こんな無駄な作業(ほとんど単なる肉体労働だ。プログラマーはもっと頭を鍛えなきゃ。)をあまり続けたくないので、さっさとある程度のレベルに仕上げて、ソースの利権やメンテナンスを、誰か別の人に譲っちゃおうかな?とか、思っています。
  845.  
  846.  えっ、なぜかって、それは、僕がPC互換機ユーザーになるかもしれないからです。
  847.  
  848.  最近の舶来モノのゲームは凄いからね。あと、Windows 95 も楽しみだし。なにより拡張機材の調達が安価で楽。(マルチメディア対応のノートもあるしね、液晶も2・3年後には安くなるらしいし。やっぱこれからはノートだよな。)
  849.  
  850.  ボード1枚で Video in window やら Video capture やら画面モードのアップグレードやらがどうにでもなるマシンなんて、魅力的だピー。
  851.  
  852.  さぁ、果たして「FMV」は、私のおメガネにかなうのでしょうか、それとも「TOWNS」が大化けするのか?
  853.  
  854.  どうでもいいけど、個人的には、最低 Pentium/75 は欲しいところだな。
  855.  
  856.  今時 i486/66 なんて時代遅れもいいところだしね。
  857.  
  858.  まぁ、Windows 95 ではプログラムもやりたいと思ってるし。
  859.  
  860.  最近CPUが速くなりすぎちゃって、別に、スプライトが付いてるマシンじゃなくてもいい気がするし。
  861.  
  862.  確か6年前、最先端のパソコンってつもりで買ったTOWNSなのに、最近発表されるマシンとかそういうインパクト全然ないし。
  863.  
  864.  友だちマック買っちゃったし。
  865.  
  866.  今買うと、すぐに液晶の時代が来ちゃいそうだし。
  867.  
  868.  Plug & Play 回路付いてないと恥ずかしい気がするし。
  869.  
  870.  結局は、待ってるんだよね。
  871.  
  872.  
  873.  
  874.                                          [ C" 4th edition β version ]
  875.                            制作・著作  松岡広高
  876.                       開発環境 FM-TOWNS 2 i386DX/16MHz RAM 6M HD 0M
  877.                                                 Towns OS V2.1 L31
  878.                                                        F-BASIC 386 V2.1 L10
  879.                                    使用ツール HEwin / 乙女座 / MVi / Tombow
  880.  
  881.